import request from '@/utils/request'

/**
 * 用户登录
 * @param {Object} data - 登录参数：username, password
 * @returns {Promise} 成功时返回 { code: 200, data: { token: '令牌', userInfo: { userId: '字符串UUID', username: '用户名', role: '角色' } } }
 */
export function login(data) {
  return request({
    url: '/user/login',
    method: 'post',
    data
  })
}

/**
 * 用户注册
 * @param {Object} data - 注册参数：username, password, email
 * @returns {Promise} 成功时返回 { code: 200, data: { userId: '字符串UUID', username: '用户名' } }
 */
export function register(data) {
  return request({
    url: '/user/register',
    method: 'post',
    data
  })
}

/**
 * 获取用户信息
 * @returns {Promise}
 */
export function getUserInfo() {
  return request({
    url: '/user/info',
    method: 'get'
  })
}

/**
 * 修改密码
 * @param {Object} data - 修改密码参数：oldPassword, newPassword
 * @returns {Promise}
 */
export function changePassword(data) {
  return request({
    url: '/user/password',
    method: 'put',
    data
  })
}

/**
 * 用户登出
 * @returns {Promise}
 */
export function logout() {
  return request({
    url: '/user/logout',
    method: 'post'
  })
}

/**
 * 获取用户列表
 * @param {Object} params - 查询参数
 * @param {number} params.page - 当前页码
 * @param {number} params.pageSize - 每页数量
 * @param {string} [params.keyword] - 搜索关键词（用户名或电子邮箱）
 * @returns {Promise} 返回用户列表数据，格式如下：
 * {
 *   code: 200,
 *   message: "操作成功",
 *   data: {
 *     total: 2, // 总记录数
 *     records: [ // 用户记录数组
 *       {
 *         userId: "bc405742-0588-11f0-b96b-5405db218860", // 用户ID
 *         username: "admin", // 用户名
 *         email: "admin@system.com", // 电子邮箱
 *         role: "admin", // 角色
 *         registrationTime: "2025-03-20T20:47:50", // 注册时间
 *         lastLoginTime: "2025-03-22T18:05:51", // 最后登录时间
 *         status: "active" // 状态：active-启用，inactive-停用
 *       }
 *     ]
 *   }
 * }
 */
export function getUserList(params) {
  return request({
    url: '/user/list',
    method: 'get',
    params
  })
}

/**
 * 删除用户
 * @param {string} userId - 用户ID
 * @returns {Promise} 返回删除结果
 */
export function deleteUser(userId) {
  return request({
    url: `/user/delete/${userId}`,
    method: 'delete'
  })
}

/**
 * 重置用户密码
 * @param {string} userId - 用户ID
 * @returns {Promise} 返回重置结果
 */
export function resetPassword(userId) {
  return request({
    url: `/user/resetPassword/${userId}`,
    method: 'put'
  })
}

/**
 * 修改用户状态
 * @param {Object} data - 用户状态数据
 * @param {string} data.userId - 用户ID
 * @param {string} data.status - 用户状态：active-启用，locked-停用
 * @returns {Promise} 返回状态修改结果
 */
export function changeStatus(data) {
  return request({
    url: '/user/status',
    method: 'post',
    data
  })
}

/**
 * 更新用户角色
 * @param {string} userId - 用户ID (UUID格式)
 * @param {string} roleId - 新角色ID
 * @returns {Promise}
 */
export function updateUserRole(userId, roleId) {
  return request({
    url: `/user/${userId}/role`,
    method: 'put',
    data: { roleId }
  })
}

/**
 * 获取角色列表
 * @param {Object} params - 查询参数
 * @param {number} params.page - 当前页码
 * @param {number} params.pageSize - 每页数量
 * @param {string} [params.keyword] - 搜索关键词
 * @returns {Promise} 返回角色列表数据
 */
export function getRoleList(params) {
  return request({
    url: '/user/role/list',
    method: 'get',
    params
  })
}

/**
 * 修改角色状态
 * @param {Object} role - 完整的角色对象
 * @param {string} role.id - 角色ID
 * @param {string} role.roleName - 角色名称
 * @param {string} role.roleType - 角色类型
 * @param {string} role.description - 角色描述
 * @param {string} role.status - 角色状态：active-启用，locked-停用
 * @param {string} role.createTime - 创建时间
 * @returns {Promise} 返回状态修改结果
 */
export function changeRoleStatus(role) {
  return request({
    url: '/user/role/status',
    method: 'post',
    data: role
  })
} 